Skip to content

HJ26 字符串排序 ​

本节目标:理解“HJ26 字符串排序”的核心思路,并能把它用于实际开发或面试表达。 中等 通过率:39.16% 时间限制:1秒 空间限制:32M 知识点==字符串====排序== 描述 编写一个程序,将输入字符串中的字符按如下规则排序。

规则 1 :英文字母从 A 到 Z 排列,不区分大小写。

如,输入: Type 输出: epTy

规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。

如,输入: BabA 输出: aABb

规则 3 :非英文字母的其它字符保持原来的位置。

如,输入: By?e 输出: Be?y

数据范围:输入的字符串长度满足 1≤�≤1000 1≤n≤1000

输入描述: 输入字符串 输出描述: 输出字符串 示例1 输入: A Famous Saying: Much Ado About Nothing (2012/8). ==复制== 输出: A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

def sort_string(s):

提取所有的英文字母并按字母表排序,同时保留原始字母的大小写状态 ​

letters = sorted([c for c in s if c.isalpha()], key=lambda x: x.lower())

创建一个结果列表,初始与原字符串相同,用于存放最终结果 ​

result = list(s)

替换result中的字母部分 ​

letter_idx = 0 # letters中字母的索引 for i in range(len(s)): if s[i].isalpha(): result[i] = letters[letter_idx] letter_idx += 1 return ''.join(result)

读取输入 ​

s = input()

输出排序后的字符串 ​

print(sort_string(s))

本站总访问 — 次